home *** CD-ROM | disk | FTP | other *** search
/ NOVA - For the NeXT Workstation / NOVA - For the NeXT Workstation.iso / Apps / ArchiveUtils / backupod / mountod.c < prev    next >
Encoding:
C/C++ Source or Header  |  1992-12-20  |  1.6 KB  |  62 lines

  1. /* mountod.c - mount an od in argv[1], change owner to user
  2. */
  3.  
  4.  
  5. #include <stdio.h>
  6.  
  7. #define UNIT    "0a"                    /* Default unit number */
  8. #define DEVICE    "od"                    /* Default (only available) device name */
  9. #define DEVDIR    "/dev"                    /* Default (only available) device directory */
  10. #define MOUNT    "/usr/etc/mount"        /* Command for mounting filesystem */
  11.  
  12. #define MAX(x, y)    \
  13.     (x > y ? x : y)
  14.  
  15.  
  16. char *getenv();
  17.  
  18. main(int argc, char *argv[])
  19. {
  20.     char        *cmdbuf;
  21.     char        *PgmName;
  22.     char        *unit;
  23.     char        *user;
  24.  
  25.  
  26.     PgmName = basename(argv[0]);        /* So messages look nice */
  27.  
  28.     if ((argc > 3) || (argc < 2)){
  29.         (void)fprintf(stderr, "%s: wrong number of arguments\n", PgmName);
  30.         (void)fprintf(stderr, "Usage: %s directory [UNIT]\n", PgmName);
  31.         (void)fprintf(stderr,
  32.     "\tUNIT is the OD unit number (e.g., 0a) to be mounted on directory\n", DEVDIR);
  33.         exit(1);
  34.     } else if (argc == 3) {        /* Two argument provided */
  35.         unit = argv[2];
  36.     } else {                    /* One argument provided; use default unit */
  37.         unit = UNIT;
  38.     }
  39.  
  40.     cmdbuf = (char *)malloc(1024);
  41.  
  42.     (void)sprintf(cmdbuf, "%s %s/%s%s %s", MOUNT, DEVDIR, DEVICE, unit, argv[1]);
  43.     if (0 != system(cmdbuf)) {
  44.         (void)fprintf(stderr, "%s: problems mounting %s on %s.\n", PgmName, unit, argv[1]);
  45.         exit(1);
  46.     }
  47.     
  48.     if (user = getenv ("USER")) {
  49.         (void)sprintf (cmdbuf, "/usr/etc/chown %s %s", user, argv[1]);
  50.         if (0 != system(cmdbuf)) {
  51.             (void)fprintf(stderr, "%s: problems with chown\n", PgmName);
  52.             exit (2);
  53.         } /* end if command didn't work */
  54.     } else {
  55.         fprintf (stderr, "%s: environment variable USER not defined\n", PgmName);
  56.         exit (3);
  57.     } /* end if USER in environment var */
  58.  
  59.     exit(0);
  60. }
  61.  
  62.